<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>切割文件</title>
</head>
<body>
    <input type="file" value="上传文件" id="file" onchange="upload()">
</body>
</html>
<script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script>
    var file,start,size,end,sliceFile,sliceNo;//
    function upload(){
        file=document.getElementById('file').files[0];
        start=0;
        size=3*1024*1024;
        end=start+size;
        sliceNo=1;
        sliceFile =cutFile(file);
        sendsliceFile(sliceFile);
        // console.log(sliceFile);
    }
    function cutFile(file){
        sliceFile=file.slice(start,end);
        start=end;
        end=size+start;
        return sliceFile;
    }
    //传送文件
    function sendsliceFile(sliceFile){
        var blob_count=Math.ceil(file.size/size);
        var form = new FormData();
        form.append("sliceFile",sliceFile);
        // console.log(form.get('sliceFile'));
        // return false;
        form.append("sliceNo",sliceNo);
        form.append("filename",file.name);
        form.append("blob_count",blob_count);
        $.ajax({
            url:"{url:/test/bigFileUplaod}",
            data:form,
            dataType:"HTML",
            type:"post",
            contentType:false,
            processData:false,
            success:function(e){
                console.log(e);
            }
        });
    //     //没切完,继续切,继续传
        if (start<file.size) {
            ///在这个条件下,再切
            var t=setTimeout(function(){
                sliceNo++;
                sliceFile=cutFile(file);//将文件穿给切割的方法
                sendsliceFile(sliceFile);//一边切割,一边穿
            },1000);
        } else {
            //切割的开始位置超出文件的总大小的时候,代表切割完成
            clearTimeout(t);
        }
    }
</script>